Conventionally, a volatile storage element such as a Dynamic Random Access Memory (DRAM) is mainly used as a memory for a computer. Since a DRAM must be regularly energized in order to retain data, the DRAM loses its internal data when energization of a computer is interrupted. Therefore, various software that run on the computer are also premised on such characteristics of the DRAM and store data intended for long-term storage, in a storage medium that need not be energized to retain data such as an external magnetic storage medium, instead of in a memory.
As a result of recent advancements made in research and development of storage elements, storage elements that do not require regular energization have become available and memories using such storage elements are increasingly being put to practical use. Examples of such memories include a Phase Change Memory and a Resistive Random Access Memory. Such memories continuously retain data even through power interruptions and are therefore collectively referred to as Non-Volatile Memories or Persistent Memories.
In addition, from the perspective that such non-volatile memories can substitute for conventional storage media which do not require energization, the non-volatile memories are also referred to as Storage Class Memories (SCMs). In the present specification, hereinafter, a memory capable of retaining data through a power interruption will be referred to as an SCM.
In a general computer, a process of each application program is given a virtual address space (a virtual area) unique to the process which is separate from a physical address space (a physical area) of a memory actually mounted to the computer. The process runs on the virtual address space. Therefore, for the process to read/write data from/to an SCM, a system program such as an OS (Operating System) or a hypervisor which manages hardware must map an area of the SCM onto the virtual address space of the process.
A conventional computer using a DRAM as a memory is not premised on the fact that, when a same application program is executed a plurality of times, data of a previous execution remains on the memory. Therefore, no problems arise even when areas of the memory which are mapped to a virtual address space of a process by previous and current executions differ from each other.
On the other hand, when an SCM is used as a memory, in order to reuse data of a previous execution, an area of the SCM during the previous execution must be once again mapped to the virtual address space of the process. However, normally, there is no way for an application program to recognize what area is being mapped to the virtual address space of its own process. Therefore, the application program is unable to once again map, to a virtual space of the process, an area of the SCM which had been a storage destination of data during a previous execution.
As means for realizing such mapping, PTL 1 discloses a method in which an application program issues a mapping request of an SCM using a unique key.